<?php

namespace Api\Controller;

class TestController extends  BaseController {
	
//单推接口案例
function pushMessageToSingle(){
	vendor('Gtpush.Igetui');
    $igt = new \IGeTui(NULL,APPKEY,MASTERSECRET,false); 
    $template = $this->IGtTransmissionTemplateDemo();
    //个推信息体
    $message = new \IGtSingleMessage();
    $message->set_isOffline(true);//是否离线
    $message->set_offlineExpireTime(3600*12*1000);//离线时间
    $message->set_data($template);//设置推送消息类型
//	$message->set_PushNetWorkType(0);//设置是否根据WIFI推送消息，1为wifi推送，0为不限制推送
    //接收方
    $target = new \IGtTarget();
    $target->set_appId(APPID);
    $target->set_clientId(CID);
//    $target->set_alias(Alias); 

    try {
        $rep = $igt->pushMessageToSingle($message, $target);
        var_dump($rep);
        echo ("<br><br>11");
    }catch(RequestException $e){
        $requstId =e.getRequestId();
        $rep = $igt->pushMessageToSingle($message, $target,$requstId);
        var_dump($rep);
        echo ("<br><br>22");
    }
}

public function pay_bank($value='')
{
 
    $enc_bank_no = '6222021104008554130';
    $enc_true_name = '张亚伟';
    $amount = 1;
    $res = pay_bank('debug', 1, 1002, $enc_bank_no, $enc_true_name, $amount);
    if($res) {
        // $res= json_decode($res);
    }
    $this->ajaxReturn(array('res' => $res));
}

//liuzm   begin 
public function pushApp(){
	vendor('Gtpush.Igetui');
    $igt = new \IGeTui(HOST,APPKEY,MASTERSECRET);
    //$template = IGtTransmissionTemplateDemo();
    $template =$this->IGtLinkTemplateDemo();
    //个推信息体
    //基于应用消息体
    $message = new \IGtAppMessage();
    $message->set_isOffline(true);
    $message->set_offlineExpireTime(10 * 60 * 1000);//离线时间单位为毫秒，例，两个小时离线为3600*1000*2
    $message->set_data($template);
    $appIdList=array(APPID);
    $message->set_appIdList($appIdList);
   	$rep = $igt->pushMessageToApp($message,"任务组名");
    P($rep);
    echo ("<br><br>");
}

//单推接口案例
function pushMessageToSingles(){
	//安卓
	$uid	=	I('uid');
	$find	=	M('user')->where('id="'.$uid.'"')->find();
	$cid	=	$find['cid'];
	//$cid	=	'be3da8f22a51db8013620b78005ce0de';
	$cid	=	'4314d721ef16b8259f44f08d1c04c365';
	$msg	=	I('msg');
	$msg	=	2;
	switch ($msg) {
		case '1':
			$msg	=	"您有一条新消息";
			break;
		case '2':
			$msg	=	"您有一条新的预约订单，请及时处理";
			break;
		default:
			$msg	=	"感谢您的参与,谢谢";
			break;
	}
	vendor('Gtpush.Igetui');
    $igt = new \IGeTui(HOST,APPKEY,MASTERSECRET);
  	$template = $this->IGtTransmissionTemplateDemo();
    //个推信息体
    $message = new \IGtSingleMessage();
    $message->set_isOffline(true);//是否离线
    $message->set_offlineExpireTime(3600*12*1000);//离线时间
    $message->set_data($template);//设置推送消息类型
    //接收方
    $target = new \IGtTarget();
    $target->set_appId(APPID);
	$target->set_clientId($cid);//042952837dc792a54dd61f2a491f0603
    try {
        $rep = $igt->pushMessageToSingle($message, $target);
      	P($rep);
        echo ("<br><br>");
    }catch(RequestException $e){
        $requstId =e.getRequestId();
        $rep = $igt->pushMessageToSingle($message, $target,$requstId);
        P($rep);
        echo ("<br><br>");
    }

}
//end








//群推接口案例
function pushMessageToApp(){
	
	vendor('Gtpush.Igetui');
	
    $igt = new \IGeTui(HOST,APPKEY,MASTERSECRET);
    $template = IGtTransmissionTemplateDemo();
    //$template =$this->IGtLinkTemplateDemo();
    //个推信息体
    //基于应用消息体
    $message = new \IGtAppMessage();
    $message->set_isOffline(true);
    $message->set_offlineExpireTime(10 * 60 * 1000);//离线时间单位为毫秒，例，两个小时离线为3600*1000*2
    $message->set_data($template);

    $appIdList=array(APPID);
   // $phoneTypeList=array('ANDROID');
    //$provinceList=array('浙江');
   // $tagList=array('haha');
    //用户属性
    //$age = array("0000", "0010");


    //$cdt = new AppConditions();
   // $cdt->addCondition(AppConditions::PHONE_TYPE, $phoneTypeList);
   // $cdt->addCondition(AppConditions::REGION, $provinceList);
    //$cdt->addCondition(AppConditions::TAG, $tagList);
    //$cdt->addCondition("age", $age);

    $message->set_appIdList($appIdList);
    //$message->set_conditions($cdt->getCondition());

   $rep = $igt->pushMessageToApp($message,"任务组名");

    var_dump($rep);
    echo ("<br><br>");
}


//服务端推送接口，支持三个接口推送
//1.PushMessageToSingle接口：支持对单个用户进行推送
//2.PushMessageToList接口：支持对多个用户进行推送，建议为50个用户
//3.pushMessageToApp接口：对单个应用下的所有用户进行推送，可根据省份，标签，机型过滤推送
//



function pushMessageToSingleBatch()
{
    putenv("gexin_pushSingleBatch_needAsync=false");

    $igt = new IGeTui(HOST, APPKEY, MASTERSECRET);
    $batch = new IGtBatch(APPKEY, $igt);
    $batch->setApiUrl(HOST);
    //$igt->connect();
    //消息模版：
    // 1.TransmissionTemplate:透传功能模板
    // 2.LinkTemplate:通知打开链接功能模板
    // 3.NotificationTemplate：通知透传功能模板
    // 4.NotyPopLoadTemplate：通知弹框下载功能模板

//    $template = IGtNotyPopLoadTemplateDemo();
    //$template = IGtLinkTemplateDemo();
    //$template = IGtNotificationTemplateDemo();
    $template = IGtTransmissionTemplateDemo();

    //个推信息体
    $message = new IGtSingleMessage();
    $message->set_isOffline(true);//是否离线
    $message->set_offlineExpireTime(12 * 1000 * 3600);//离线时间
    $message->set_data($template);//设置推送消息类型
//    $message->set_PushNetWorkType(1);//设置是否根据WIFI推送消息，1为wifi推送，0为不限制推送

    $target = new IGtTarget();
    $target->set_appId(APPID);
    $target->set_clientId(CID);
    $batch->add($message, $target);
    try {

        $rep = $batch->submit();
        var_dump($rep);
        echo("<br><br>");
    }catch(Exception $e){
        $rep=$batch->retry();
        var_dump($rep);
        echo ("<br><br>");
    }
}

//多推接口案例
function pushMessageToList()
{
    putenv("gexin_pushList_needDetails=true");
    putenv("gexin_pushList_needAsync=true");

    $igt = new IGeTui(HOST, APPKEY, MASTERSECRET);
    //消息模版：
    // 1.TransmissionTemplate:透传功能模板
    // 2.LinkTemplate:通知打开链接功能模板
    // 3.NotificationTemplate：通知透传功能模板
    // 4.NotyPopLoadTemplate：通知弹框下载功能模板


    //$template = IGtNotyPopLoadTemplateDemo();
    //$template = IGtLinkTemplateDemo();
    //$template = IGtNotificationTemplateDemo();
    $template = IGtTransmissionTemplateDemo();
    //个推信息体
    $message = new IGtListMessage();
    $message->set_isOffline(true);//是否离线
    $message->set_offlineExpireTime(3600 * 12 * 1000);//离线时间
    $message->set_data($template);//设置推送消息类型
//    $message->set_PushNetWorkType(1);	//设置是否根据WIFI推送消息，1为wifi推送，0为不限制推送
//    $contentId = $igt->getContentId($message);
    $contentId = $igt->getContentId($message,"toList任务别名功能");	//根据TaskId设置组名，支持下划线，中文，英文，数字

    //接收方1
    $target1 = new IGtTarget();
    $target1->set_appId(APPID);
    $target1->set_clientId(CID);
//    $target1->set_alias(Alias);

    $targetList[] = $target1;

    $rep = $igt->pushMessageToList($contentId, $targetList);

    var_dump($rep);

    echo ("<br><br>");

}

//群推接口案例
function pushMessageToApps(){
    $igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
    $template = IGtTransmissionTemplateDemo();
    //$template = IGtLinkTemplateDemo();
    //个推信息体
    //基于应用消息体
    $message = new IGtAppMessage();
    $message->set_isOffline(true);
    $message->set_offlineExpireTime(10 * 60 * 1000);//离线时间单位为毫秒，例，两个小时离线为3600*1000*2
    $message->set_data($template);

    $appIdList=array(APPID);
    //$phoneTypeList=array('ANDROID');
    //$provinceList=array('浙江');
   // $tagList=array('haha');
    //用户属性
    //$age = array("0000", "0010");


    //$cdt = new AppConditions();
   // $cdt->addCondition(AppConditions::PHONE_TYPE, $phoneTypeList);
   // $cdt->addCondition(AppConditions::REGION, $provinceList);
    //$cdt->addCondition(AppConditions::TAG, $tagList);
    //$cdt->addCondition("age", $age);

    $message->set_appIdList($appIdList);
    //$message->set_conditions($cdt->getCondition());

    $rep = $igt->pushMessageToApp($message,"任务组名");

    var_dump($rep);
    echo ("<br><br>");
}



//所有推送接口均支持四个消息模板，依次为通知弹框下载模板，通知链接模板，通知透传模板，透传模板
//注：IOS离线推送需通过APN进行转发，需填写pushInfo字段，目前仅不支持通知弹框下载功能

function IGtNotyPopLoadTemplateDemo(){
	
	vendor('Gtpush.Igetui');
	
    $template =  new \IGtNotyPopLoadTemplate();

    $template ->set_appId(APPID);//应用appid
    $template ->set_appkey(APPKEY);//应用appkey
    //通知栏
    $template ->set_notyTitle("个推");//通知栏标题
    $template ->set_notyContent("个推最新版点击下载");//通知栏内容
    $template ->set_notyIcon("");//通知栏logo
    $template ->set_isBelled(true);//是否响铃
    $template ->set_isVibrationed(true);//是否震动
    $template ->set_isCleared(true);//通知栏是否可清除
    //弹框
    $template ->set_popTitle("弹框标题");//弹框标题
    $template ->set_popContent("弹框内容");//弹框内容
    $template ->set_popImage("");//弹框图片
    $template ->set_popButton1("下载");//左键
    $template ->set_popButton2("取消");//右键
    //下载
    $template ->set_loadIcon("");//弹框图片
    $template ->set_loadTitle("地震速报下载");
    $template ->set_loadUrl("http://dizhensubao.igexin.com/dl/com.ceic.apk");
    $template ->set_isAutoInstall(false);
    $template ->set_isActived(true);
    //$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息

    return $template;
}

function IGtLinkTemplateDemo(){
	vendor('Gtpush.Igetui');
    $template =  new \IGtLinkTemplate();
    $template ->set_appId(APPID);//应用appid
    $template ->set_appkey(APPKEY);//应用appkey
    $template ->set_title("请输入通知标题");//通知栏标题
    $template ->set_text("请输入通知内容");//通知栏内容
    $template ->set_logo("");//通知栏logo
    $template ->set_isRing(true);//是否响铃
    $template ->set_isVibrate(true);//是否震动
    $template ->set_isClearable(true);//通知栏是否可清除
    $template ->set_url("http://www.baidu.com/");//打开连接地址
    //$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
    //iOS推送需要设置的pushInfo字段
//        $apn = new IGtAPNPayload();
//        $apn->alertMsg = "alertMsg";
//        $apn->badge = 11;
//        $apn->actionLocKey = "启动";
//    //        $apn->category = "ACTIONABLE";
//    //        $apn->contentAvailable = 1;
//        $apn->locKey = "通知栏内容";
//        $apn->title = "通知栏标题";
//        $apn->titleLocArgs = array("titleLocArgs");
//        $apn->titleLocKey = "通知栏标题";
//        $apn->body = "body";
//        $apn->customMsg = array("payload"=>"payload");
//        $apn->launchImage = "launchImage";
//        $apn->locArgs = array("locArgs");
//
//        $apn->sound=("test1.wav");;
//        $template->set_apnInfo($apn);
    return $template;
}

function IGtNotificationTemplateDemo($msg){
	vendor('Gtpush.Igetui');
    $template =  new \IGtNotificationTemplate();
    $template->set_appId(APPID);//应用appid
   // P(APPID);
    $template->set_appkey(APPKEY);//应用appkey
    $template->set_transmissionType(1);//透传消息类型
    $template->set_transmissionContent("测试离线");//透传内容
    $template->set_title("娱助理");//通知栏标题
    $template->set_text($msg);//通知栏内容
    //$template->set_text('test');//通知栏内容
    $template->set_logo("http://www.igetui.com/logo.png");//通知栏logo
    $template->set_isRing(true);//是否响铃
    $template->set_isVibrate(true);//是否震动
    $template->set_isClearable(true);//通知栏是否可清除
    //$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
    //iOS推送需要设置的pushInfo字段
//        $apn = new IGtAPNPayload();
//        $apn->alertMsg = "alertMsg";
//        $apn->badge = 11;
//        $apn->actionLocKey = "启动";
//    //        $apn->category = "ACTIONABLE";
//    //        $apn->contentAvailable = 1;
//        $apn->locKey = "通知栏内容";
//        $apn->title = "通知栏标题";
//        $apn->titleLocArgs = array("titleLocArgs");
//        $apn->titleLocKey = "通知栏标题";
//        $apn->body = "body";
//        $apn->customMsg = array("payload"=>"payload");
//        $apn->launchImage = "launchImage";
//        $apn->locArgs = array("locArgs");
//
//        $apn->sound=("test1.wav");;
//        $template->set_apnInfo($apn);
    return $template;
}

function IGtTransmissionTemplateDemos(){//exit('@');
	vendor('Gtpush.Igetui');
    $template =  new \IGtTransmissionTemplate();
    $template->set_appId(APPID);//应用appid
    $template->set_appkey(APPKEY);//应用appkey
    $template->set_transmissionType(1);//透传消息类型
    $template->set_transmissionContent("测试离线ddd");//透传内容
    //$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
    //APN简单推送
          $template = new \IGtAPNTemplate();
          $apn = new \IGtAPNPayload();
          $alertmsg=new \SimpleAlertMsg();
          $alertmsg->alertMsg="";
          $apn->alertMsg=$alertmsg;
//        $apn->badge=2;
//        $apn->sound="";
          $apn->add_customMsg("payload","payload");
          $apn->contentAvailable=1;
          $apn->category="ACTIONABLE";
          $template->set_apnInfo($apn);
          $message = new \IGtSingleMessage();

    //APN高级推送
//  $apn = new \IGtAPNPayload();
//  $alertmsg=new \DictionaryAlertMsg();
//  $alertmsg->body="body";
//  $alertmsg->actionLocKey="ActionLockey";
//  $alertmsg->locKey="LocKey";
//  $alertmsg->locArgs=array("locargs");
//  $alertmsg->launchImage="launchimage";
////        IOS8.2 支持
//  $alertmsg->title="Title";
//  $alertmsg->titleLocKey="TitleLocKey";
//  $alertmsg->titleLocArgs=array("TitleLocArg");
//
//  $apn->alertMsg=$alertmsg;
//  $apn->badge=7;
//  $apn->sound="";
//  $apn->add_customMsg("payload","payload");
//  $apn->contentAvailable=1;
//  $apn->category="ACTIONABLE";
//  $template->set_apnInfo($apn);

    //PushApn老方式传参
//    $template = new \IGtAPNTemplate();
//          $template->set_pushInfo("", 10, "", "com.gexin.ios.silence", "", "", "", "");
    return $template;
	
}

function IGtTransmissionTemplateDemo(){
        $template =  new \IGtTransmissionTemplate();
        $template->set_appId(APPID);//应用appid
        $template->set_appkey(APPKEY);//应用appkey
        $template->set_transmissionType(1);//透传消息类型
        $template->set_transmissionContent("测试离线ddd");//透传内容
        //$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息

// 如下有两个推送模版，一个简单一个高级，可以互相切换使用。此处以高级为例，所以把简单模版注释掉。
//        APN简单推送
//      $apn = new \IGtAPNPayload();
//      $alertmsg=new \SimpleAlertMsg();
//      $alertmsg->alertMsg="123";
//      $apn->alertMsg=$alertmsg;
//      $apn->badge=2;
//      $apn->sound="";
//      $apn->add_customMsg("payload","payload");
//      $apn->contentAvailable=1;
//      $apn->category="ACTIONABLE";
//      $template->set_apnInfo($apn);

//       APN高级推送
        $apn = new \IGtAPNPayload();
        $alertmsg=new \DictionaryAlertMsg();
        $alertmsg->body="请您及时查看";			//通知文本消息字符串
        $alertmsg->actionLocKey="ActionLockey";	//(用于多语言支持）指定执行按钮所使用的Localizable.strings
        $alertmsg->locKey="LocKey";				//(用于多语言支持）指定Localizable.strings文件中相应的key
        $alertmsg->locArgs=array("locargs");
        $alertmsg->launchImage="launchimage";	//指定启动界面图片名
//        iOS8.2 支持
        $alertmsg->title="您有一条新消息";			//通知标题
        $alertmsg->titleLocKey="TitleLocKey";	//(用于多语言支持）对于标题指定执行按钮所使用的Localizable.strings,仅支持iOS8.2以上版本
        $alertmsg->titleLocArgs=array("TitleLocArg");//对于标题, 如果loc-key中使用的占位符，则在loc-args中指定各参数,仅支持iOS8.2以上版本
        $apn->alertMsg=$alertmsg;
        $apn->badge=0;			//应用icon上显示的数字
        $apn->sound="";			//通知铃声文件名
        $apn->add_customMsg("payload","");//增加自定义的数据
//      $apn->contentAvailable=1;	推送直接带有透传数据
        $apn->category="ACTIONABLE";	//在客户端通知栏触发特定的action和button显示
        $template->set_apnInfo($apn);
		//P($template);
        return $template;
	}

}